home *** CD-ROM | disk | FTP | other *** search
-
- /*
-
- TO DO:
-
- */
-
- OPT MODULE, OSVERSION=37
-
- ->> corners_plugin: Modules
-
- MODULE 'tools/easygui', 'graphics/text',
- 'intuition/intuition', 'graphics/rastport',
- 'utility', 'utility/tagitem', 'tools/ghost'
-
- -><
-
- /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
-
- ->> corners_plugin: Definitions
-
- EXPORT ENUM CORNER_NONE, CORNER_TOPLEFT, CORNER_TOPRIGHT,
- CORNER_LOWERLEFT, CORNER_LOWERRIGHT
-
- CONST NUM_CORNERS=CORNER_LOWERRIGHT
-
- EXPORT OBJECT corners_plugin OF plugin PRIVATE
-
- width
- height
- box_width
- box_height
- corner
- colour_fg
- colour_bg
- disabled
-
- mouse_x
- mouse_y
-
- corners[NUM_CORNERS]:ARRAY OF LONG
-
- ENDOBJECT
-
- OBJECT corner
-
- x, y, w, h
-
- rel_x, rel_y
-
- ENDOBJECT
-
- EXPORT ENUM PLA_Corners_Width=$81070001, -> [I..]
- PLA_Corners_Height, -> [I..]
- PLA_Corners_BoxWidth, -> [ISG]
- PLA_Corners_BoxHeight, -> [ISG]
- PLA_Corners_ActiveCorner, -> [ISG]
- PLA_Corners_FGColor, -> [ISG]
- PLA_Corners_BGColor, -> [ISG]
- PLA_Corners_Disabled -> [ISG]
-
- -><
-
- /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
-
- ->> corners_plugin: corners()
-
- PROC corners(tags:PTR TO tagitem) OF corners_plugin
-
- DEF a, corner:PTR TO corner
-
- IF utilitybase
-
- self.width := GetTagData(PLA_Corners_Width, 32, tags)
- self.height := GetTagData(PLA_Corners_Height, 24, tags)
- self.box_width := GetTagData(PLA_Corners_BoxWidth, 8, tags)
- self.box_height := GetTagData(PLA_Corners_BoxHeight, 6, tags)
- self.corner := GetTagData(PLA_Corners_ActiveCorner, CORNER_NONE, tags)
- self.colour_fg := GetTagData(PLA_Corners_FGColor, 1, tags)
- self.colour_bg := GetTagData(PLA_Corners_BGColor, 0, tags)
- self.disabled := GetTagData(PLA_Corners_Disabled, FALSE, tags)
-
- ELSE
-
- Raise("util")
-
- ENDIF
-
- FOR a:=1 TO NUM_CORNERS
-
- NEW corner
-
- SELECT a
-
- CASE CORNER_TOPLEFT
-
- corner.rel_x:=0
- corner.rel_y:=0
-
- CASE CORNER_TOPRIGHT
-
- corner.rel_x:=self.width - self.box_width
- corner.rel_y:=0
-
- CASE CORNER_LOWERLEFT
-
- corner.rel_x:=0
- corner.rel_y:=self.height - self.box_height
-
- CASE CORNER_LOWERRIGHT
-
- corner.rel_x:=self.width - self.box_width
- corner.rel_y:=self.height - self.box_height
-
- ENDSELECT
-
- corner.w:=self.box_width
- corner.h:=self.box_height
-
- self.corners[a-1]:=corner
-
- ENDFOR
-
- ENDPROC
-
- PROC end() OF corners_plugin
-
- DEF a, corner:PTR TO corner
-
- FOR a:=0 TO (NUM_CORNERS-1)
-
- corner:=self.corners[a]
-
- END corner
-
- ENDFOR
-
- ENDPROC
-
- -><
-
- ->> corners_plugin: set() & get()
-
- PROC set(attr, value) OF corners_plugin
-
- SELECT attr
-
- CASE PLA_Corners_BoxWidth
-
- IF (value <> self.box_width) AND (value < self.width)
-
- self.box_width:=value
-
- IF self.disabled=FALSE THEN self.draw(self.gh.wnd)
-
- ENDIF
-
- CASE PLA_Corners_BoxHeight
-
- IF (value <> self.box_height) AND (value < self.height)
-
- self.box_height:=value
-
- IF self.disabled=FALSE THEN self.draw(self.gh.wnd)
-
- ENDIF
-
- CASE PLA_Corners_ActiveCorner
-
- IF self.corner<>value
-
- self.corner:=value
-
- IF self.disabled=FALSE THEN self.draw(self.gh.wnd)
-
- ENDIF
-
- CASE PLA_Corners_FGColor
-
- IF self.colour_fg<>value
-
- self.colour_fg:=value
-
- IF self.disabled=FALSE THEN self.draw(self.gh.wnd)
-
- ENDIF
-
- CASE PLA_Corners_BGColor
-
- IF self.colour_bg<>value
-
- self.colour_bg:=value
-
- IF self.disabled=FALSE THEN self.draw(self.gh.wnd)
-
- ENDIF
-
- CASE PLA_Corners_Disabled
-
- IF self.disabled<>value
-
- self.disabled:=value
-
- self.draw(self.gh.wnd)
-
- ENDIF
-
- ENDSELECT
-
- ENDPROC
-
- PROC get(attr) OF corners_plugin
-
- SELECT attr
-
- CASE PLA_Corners_BoxWidth; RETURN self.box_width, TRUE
- CASE PLA_Corners_BoxHeight; RETURN self.box_height, TRUE
- CASE PLA_Corners_ActiveCorner; RETURN self.corner, TRUE
- CASE PLA_Corners_FGColor; RETURN self.colour_fg, TRUE
- CASE PLA_Corners_BGColor; RETURN self.colour_bg, TRUE
- CASE PLA_Corners_Disabled; RETURN self.disabled, TRUE
-
- ENDSELECT
-
- ENDPROC -1, FALSE
-
- -><
-
- ->> corners_plugin: draw()
- PROC draw(win:PTR TO window) OF corners_plugin
-
- DEF corner:PTR TO corner, a
-
- IF win
-
- SetStdRast(win.rport)
-
- Box(self.x, self.y, (self.x+(self.xs-1)), (self.y+(self.ys-1)), self.colour_bg)
-
- IF self.disabled=FALSE
-
- FOR a:=1 TO NUM_CORNERS
-
- corner:=self.corners[a-1]
-
- corner.x:=self.x; corner.y:=self.y
-
- ENDFOR
-
- IF self.corner<>CORNER_NONE
-
- corner:=self.corners[self.corner-1]
-
- corner.draw(self.colour_fg)
-
- ENDIF
-
- ELSE
-
- ghost(win, self.x, self.y, self.xs, self.ys)
-
- ENDIF
-
- ENDIF
-
- ENDPROC
- -><
-
- ->> corners_plugin: min_size() & will_resize()
-
- PROC min_size(font:PTR TO textattr, font_height) OF corners_plugin IS self.width, self.height
-
- PROC will_resize() OF corners_plugin IS FALSE
-
- -><
-
- ->> corners_plugin: render()
-
- PROC render(ta:PTR TO textattr, x, y, xs, ys, win:PTR TO window) OF corners_plugin
-
- self.draw(win)
-
- ENDPROC
-
- -><
-
- ->> corners_plugin: message_test() & message_action()
-
- PROC message_test(imsg:PTR TO intuimessage, win:PTR TO window) OF corners_plugin
-
- IF (imsg.class=IDCMP_MOUSEBUTTONS) AND (imsg.code=SELECTDOWN)
-
- IF self.inside_box(imsg.mousex, imsg.mousey)
-
- self.mouse_x:=imsg.mousex
- self.mouse_y:=imsg.mousey
-
- RETURN TRUE
-
- ENDIF
-
- ENDIF
-
- ENDPROC FALSE
-
- PROC message_action(class, qual, code, win:PTR TO window) OF corners_plugin
-
- DEF corner:PTR TO corner, a
-
- IF (class=IDCMP_MOUSEBUTTONS) AND (code=SELECTDOWN)
-
- FOR a:=1 TO NUM_CORNERS
-
- corner:=self.corners[a-1]
-
- IF corner.inside(self.mouse_x, self.mouse_y) THEN self.set(PLA_Corners_ActiveCorner, a)
-
- ENDFOR
-
- ENDIF
-
- ENDPROC TRUE
-
- -><
-
- /* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
-
- ->> corners_plugin: private procedures
-
- PROC inside_box(x_click, y_click) OF corners_plugin
-
- ENDPROC ((x_click >= self.x) AND (x_click <= (self.x + (self.xs -1))) AND
- ((y_click >= self.y) AND (y_click <= (self.y + (self.ys -1)))))
-
- PROC inside(x_click, y_click) OF corner
-
- x_click:=x_click - self.x
- y_click:=y_click - self.y
-
- ENDPROC ((x_click >= self.rel_x) AND (x_click <= (self.rel_x + self.w)) AND
- (y_click >= self.rel_y) AND (y_click <= (self.rel_y + self.h)))
-
- PROC draw(colour) OF corner IS Box(self.x + self.rel_x, self.y + self.rel_y,
- (self.x + self.rel_x + self.w) -1 ,
- (self.y + self.rel_y + self.h) - 1,
- colour)
-
- -><
-